Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
15-07-2026

Inwerkingtreding:
16-07-2026

20.1 Solvabiliteit - wat is de solvabiliteitsratio?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 20.1
2# Parameters: ?peildatum
3# Ontologie: versie 3.0.0 of nieuwer
4
5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
6PREFIX onz-zorg: <http://purl.org/ozo/onz-zorg#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
9
10SELECT ?Kental ?Waarde
11WHERE {
12  {
13    SELECT
14      (IF(SUM(IF(?jaarrekeningpost = "H Totaal Passiva", ?bedrag, 0)) = 0,
15          "Ongedefinieerd"^^xsd:string,
16          ROUND(
17            SUM(IF(?jaarrekeningpost = "D Eigen Vermogen", ?bedrag, 0)) /
18            SUM(IF(?jaarrekeningpost = "H Totaal Passiva", ?bedrag, 0)) * 10000
19          ) / 10000) AS ?solvabiliteitsratio)
20    WHERE {
21      {
22        SELECT ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag)
23        WHERE {
24          #BIND("2024-12-31"^^xsd:date AS ?peildatum)
25          BIND(?peildatum AS ?peildatum_argument)
26          {
27            SELECT
28              (SUM(?geld_bedrag_post) + SUM(?saldo_waarde)/count(?saldo_waarde) AS ?bedrag_rubriek)
29              ?rubriek ?jaarrekeningpost_child
30            WHERE {
31              {
32                SELECT
33                  ?rubriek ?jaarrekeningpost_child
34                  (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
35                  ?peildatum_argument
36                  (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
37                  ?saldo_datum ?saldo ?heeftBeginsaldo
38                WHERE {
39                  #BIND("2024-12-31"^^xsd:date AS ?peildatum)
40                  BIND(?peildatum AS ?peildatum_argument)
41
42                  {
43                    # Prismant: prefix-mapping, want Prismant consolideert niet dus we willen onderliggende rubrieken
44                    {
45                      ?rubriek a onz-fin:Grootboekrubriek .
46                    }
47                    UNION
48                    {
49                      ?rubriek a onz-fin:Grootboekrekening .
50                      # in de testdata is deze branch overbodig, voor de zekerheid laten staan omdat in werkelijkheid
51                      # de codes waarschijnlijk grootboekrekeningen zijn
52                    }
53                    BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
54
55                    VALUES (?prismantPrefix ?jaarrekeningpost_child) {
56                      ("0511"  "D.I")
57                      ("05413" "D.IV")
58                      ("05311" "D.V")
59                      ("05342" "D.V")
60                      ("05423" "D.V")
61                      ("05323" "D.VI")
62                      ("0539"  "D.VII")
63                      ("05493" "D.VII")
64                      ("05915" "D.VII")
65                      ("091"   "D.VIII")
66                      ("06"    "E")
67                      ("07"    "F")
68                      ("14"    "G")
69                      ("15"    "G")
70                    }
71                    FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix))
72                  }
73                  UNION
74                  {
75                    # RGS: exacte mapping, want RGS consolideert zelf onderliggende rubrieken
76                    VALUES (?rubriekCode ?jaarrekeningpost_child) {
77                      ("BEivGok" "D.I")
78                      ("BEivAgi" "D.II")
79                      ("BEivHer" "D.III")
80                      ("BEivWer" "D.IV")
81                      ("BEivStr" "D.IV")
82                      ("BEivBer" "D.V")
83                      ("BEivBef" "D.VI")
84                      ("BEivOvr" "D.VII")
85                      ("BEivOre" "D.VIII")
86                      ("BVrz"    "E")
87                      ("BEga"    "E")
88                      ("BLas"    "F")
89                      ("BSch"    "G")
90                    }
91
92                    BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
93                    {
94                      ?rubriek a onz-fin:Grootboekrubriek .
95                    }
96                    UNION
97                    {
98                      ?rubriek a onz-fin:Grootboekrekening .
99                    }
100                  }
101
102                  OPTIONAL {
103                    ?rubriek onz-g:isAbout ?saldo .
104                    ?saldo
105                      a onz-fin:EindSaldo ;
106                      onz-fin:heeftGeldBedrag ?saldo_bedrag ;
107                      onz-g:hasDate ?saldo_datum .
108
109                    FILTER (?saldo_datum <= ?peildatum_argument)
110
111                    FILTER NOT EXISTS {
112                      ?rubriek onz-g:isAbout ?saldo2 .
113                      ?saldo2
114                        a onz-fin:EindSaldo ;
115                        onz-g:hasDate ?saldo_datum2 .
116
117                      FILTER(?saldo2 != ?saldo)
118                      FILTER (?saldo_datum2 <= ?peildatum_argument)
119                      FILTER (
120                        ?saldo_datum2 > ?saldo_datum
121                        || (
122                          ?saldo_datum2 = ?saldo_datum
123                          && STR(?saldo2) > STR(?saldo)
124                        )
125                      )
126                    }
127                  }
128                  # Bind alleen als er een saldo in de data aanwezig was
129                  BIND(IF(BOUND(?saldo_bedrag), 1, ?unbound) AS ?heeftBeginsaldo)
130
131                }
132              }
133
134              # Selecteer de bijbehorende grootboekpost bij de rubriek
135              OPTIONAL {
136                ?grootboek_post
137                  a onz-fin:Grootboekpost ;
138                  onz-g:partOf ?rubriek ;
139                  onz-g:hasDate ?datum ;
140                  onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
141                # Behoud de grootboek post alleen voor de meest specifieke rubriek,
142                # om dubbeltelling bij meerdere rubrieken te voorkomen
143                FILTER NOT EXISTS {
144                  ?grootboek_post onz-g:partOf ?specifiekereRubriek .
145                  ?specifiekereRubriek onz-g:partOf+ ?rubriek .
146                }
147                FILTER (?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
148                BIND (1 AS ?heeftGrootboekPost)
149              }
150              BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
151
152            } GROUP BY ?rubriek ?jaarrekeningpost_child
153          }
154
155          VALUES (?jaarrekeningpost_child ?jaarrekeningpost) {
156            ("D.I"    "D Eigen Vermogen")
157            ("D.II"    "D Eigen Vermogen")
158            ("D.III"   "D Eigen Vermogen")
159            ("D.IV"   "D Eigen Vermogen")
160            ("D.V"    "D Eigen Vermogen")
161            ("D.VI"   "D Eigen Vermogen")
162            ("D.VII"  "D Eigen Vermogen")
163            ("D.VIII" "D Eigen Vermogen")
164            ("D.I"    "H Totaal Passiva")
165            ("D.II"    "H Totaal Passiva")
166            ("D.III"    "H Totaal Passiva")
167            ("D.IV"   "H Totaal Passiva")
168            ("D.V"    "H Totaal Passiva")
169            ("D.VI"   "H Totaal Passiva")
170            ("D.VII"  "H Totaal Passiva")
171            ("D.VIII" "H Totaal Passiva")
172            ("E"      "H Totaal Passiva")
173            ("F"      "H Totaal Passiva")
174            ("G"      "H Totaal Passiva")
175          }
176
177        } GROUP BY ?jaarrekeningpost
178      }
179    }
180  }
181  VALUES ?Kental {
182    "Solvabiliteitsratio"
183    "Solvabiliteitsratio (%)"
184  }
185
186  BIND(
187    IF(DATATYPE(?solvabiliteitsratio) = xsd:string,
188      "Ongedefinieerd"^^xsd:string,
189      IF(?Kental = "Solvabiliteitsratio",
190        ROUND(xsd:decimal(?solvabiliteitsratio) * 100) / 100,        # Ratio: 2 dec
191        ROUND(xsd:decimal(?solvabiliteitsratio) * 1000) / 10         # Percentage: 1 dec
192      )
193    ) AS ?Waarde
194  )
195}
196ORDER BY ?Kental
197